﻿using System;



namespace frag_boardgame
{
   
    public interface IGame
    {
      
        GameData Data { get; }
   
        void FinishCurrentTurn();
       
        void Load(System.IO.Stream stream);
     
        void MovePlayer(int delta, Direction direction);
        /// <summary>
        /// Give the game it's needed configuration without starting the game
        /// </summary>
        /// <param name="conf"></param>
        void New(Configuraion conf);
        /// <summary>
        /// start the actual game, New() must be run beforehand. added to allow walls to the game
        /// (walls need to be added after the game has recieved it's configuration)
        /// </summary>
        void StartGame();

        void Redo();

        void Save(System.IO.Stream stream);

        ShootingValues Shoot(int targetID);

        StatisticsTable Statistics { get; }
 
        void Undo();

        
    }
}
